<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>chigraph: chi::NodeCompiler Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="chigraphDoxygenIcon.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">chigraph
   &#160;<span id="projectnumber">master</span>
   </div>
   <div id="projectbrief">Systems programming language written for beginners in LLVM</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('structchi_1_1NodeCompiler.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="structchi_1_1NodeCompiler-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">chi::NodeCompiler Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Helper to compile nodes.  
 <a href="structchi_1_1NodeCompiler.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="NodeCompiler_8hpp_source.html">chi/NodeCompiler.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a60d81f093668468eb14be0e18e319ed5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a60d81f093668468eb14be0e18e319ed5">NodeCompiler</a> (<a class="el" href="structchi_1_1FunctionCompiler.html">FunctionCompiler</a> &amp;functionCompiler, <a class="el" href="structchi_1_1NodeInstance.html">NodeInstance</a> &amp;inst)</td></tr>
<tr class="memdesc:a60d81f093668468eb14be0e18e319ed5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a60d81f093668468eb14be0e18e319ed5">More...</a><br /></td></tr>
<tr class="separator:a60d81f093668468eb14be0e18e319ed5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebdeeb7fb0009331b04d3e030fa1c18e"><td class="memItemLeft" align="right" valign="top"><a id="aebdeeb7fb0009331b04d3e030fa1c18e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>NodeCompiler</b> (const <a class="el" href="structchi_1_1NodeCompiler.html">NodeCompiler</a> &amp;)=delete</td></tr>
<tr class="separator:aebdeeb7fb0009331b04d3e030fa1c18e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b510fa959c6c378ac084fbec702beb3"><td class="memItemLeft" align="right" valign="top"><a id="a9b510fa959c6c378ac084fbec702beb3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a9b510fa959c6c378ac084fbec702beb3">NodeCompiler</a> (<a class="el" href="structchi_1_1NodeCompiler.html">NodeCompiler</a> &amp;&amp;)=default</td></tr>
<tr class="memdesc:a9b510fa959c6c378ac084fbec702beb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move const. <br /></td></tr>
<tr class="separator:a9b510fa959c6c378ac084fbec702beb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac63b5729c1bdb67a231a1f948ad59374"><td class="memItemLeft" align="right" valign="top">llvm::BasicBlock &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#ac63b5729c1bdb67a231a1f948ad59374">codeBlock</a> (size_t inputExecID) const</td></tr>
<tr class="memdesc:ac63b5729c1bdb67a231a1f948ad59374"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the code block for a given inputExecID Requires that <code>compile_stage1</code> has been called for this ID.  <a href="#ac63b5729c1bdb67a231a1f948ad59374">More...</a><br /></td></tr>
<tr class="separator:ac63b5729c1bdb67a231a1f948ad59374"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af391b4e8ecebe8859490749bac0425de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#af391b4e8ecebe8859490749bac0425de">compile_stage1</a> (size_t inputExecID)</td></tr>
<tr class="memdesc:af391b4e8ecebe8859490749bac0425de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add the basic blocks and fill the pure blocks, but don't fill the code block nop if its already been called with this inputExecID.  <a href="#af391b4e8ecebe8859490749bac0425de">More...</a><br /></td></tr>
<tr class="separator:af391b4e8ecebe8859490749bac0425de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3f5bd1f1f84fc1b35fc8ad54db3c844"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1Result.html">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#ac3f5bd1f1f84fc1b35fc8ad54db3c844">compile_stage2</a> (std::vector&lt; llvm::BasicBlock *&gt; trailingBlocks, size_t inputExecID)</td></tr>
<tr class="memdesc:ac3f5bd1f1f84fc1b35fc8ad54db3c844"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fill the codegen block If compile_stage1 hasn't been called for this inputExecID, then it will be called nop if this inputExecID has been compiled before.  <a href="#ac3f5bd1f1f84fc1b35fc8ad54db3c844">More...</a><br /></td></tr>
<tr class="separator:ac3f5bd1f1f84fc1b35fc8ad54db3c844"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3db1222a66ea1767cd6dbc8a8a10963"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#ab3db1222a66ea1767cd6dbc8a8a10963">compiled</a> (size_t inputExecID) const</td></tr>
<tr class="memdesc:ab3db1222a66ea1767cd6dbc8a8a10963"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get if compile_stage2 has been called for a given inputExecID.  <a href="#ab3db1222a66ea1767cd6dbc8a8a10963">More...</a><br /></td></tr>
<tr class="separator:ab3db1222a66ea1767cd6dbc8a8a10963"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b0bd7aecf8cfc98804b31b21066b6d1"><td class="memItemLeft" align="right" valign="top"><a id="a7b0bd7aecf8cfc98804b31b21066b6d1"></a>
<a class="el" href="structchi_1_1Context.html">Context</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a7b0bd7aecf8cfc98804b31b21066b6d1">context</a> () const</td></tr>
<tr class="memdesc:a7b0bd7aecf8cfc98804b31b21066b6d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Just <a class="el" href="structchi_1_1NodeCompiler.html#a8a595537ffd4b3116059d59e3fd61f8b" title="The node we&#39;re compiling. ">node()</a>.<a class="el" href="structchi_1_1NodeCompiler.html#a7b0bd7aecf8cfc98804b31b21066b6d1" title="Just node().context() ">context()</a> <br /></td></tr>
<tr class="separator:a7b0bd7aecf8cfc98804b31b21066b6d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12c42cfcd23400c523184966ed238806"><td class="memItemLeft" align="right" valign="top">llvm::BasicBlock &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a12c42cfcd23400c523184966ed238806">firstBlock</a> (size_t inputExecID) const</td></tr>
<tr class="memdesc:a12c42cfcd23400c523184966ed238806"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the first block to jump to for the node If there are dependent pures, it's the first pure block Otherwise, it's the code block <code>compile_stage1</code> needs to be called first for this ID.  <a href="#a12c42cfcd23400c523184966ed238806">More...</a><br /></td></tr>
<tr class="separator:a12c42cfcd23400c523184966ed238806"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd650ba41704bbeca337cbadb18f03cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1FunctionCompiler.html">FunctionCompiler</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#afd650ba41704bbeca337cbadb18f03cf">funcCompiler</a> () const</td></tr>
<tr class="memdesc:afd650ba41704bbeca337cbadb18f03cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the function compiler.  <a href="#afd650ba41704bbeca337cbadb18f03cf">More...</a><br /></td></tr>
<tr class="separator:afd650ba41704bbeca337cbadb18f03cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4599a3322541fe67adfa343c19b00dc4"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a4599a3322541fe67adfa343c19b00dc4">inputExecs</a> () const</td></tr>
<tr class="memdesc:a4599a3322541fe67adfa343c19b00dc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of input execs that we can compile If it's pure or an entry node, this is 1, otherwise it's <a class="el" href="structchi_1_1NodeCompiler.html#a8a595537ffd4b3116059d59e3fd61f8b" title="The node we&#39;re compiling. ">node()</a>.inputExecConnections().size()  <a href="#a4599a3322541fe67adfa343c19b00dc4">More...</a><br /></td></tr>
<tr class="separator:a4599a3322541fe67adfa343c19b00dc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dc06ad0390f2113fbeb5e7c0cf3dd06"><td class="memItemLeft" align="right" valign="top">llvm::IndirectBrInst &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a7dc06ad0390f2113fbeb5e7c0cf3dd06">jumpBackInst</a> () const</td></tr>
<tr class="memdesc:a7dc06ad0390f2113fbeb5e7c0cf3dd06"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the IndirectBrInst* for the pure.  <a href="#a7dc06ad0390f2113fbeb5e7c0cf3dd06">More...</a><br /></td></tr>
<tr class="separator:a7dc06ad0390f2113fbeb5e7c0cf3dd06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3825379c4840a017b6ab91ec5b42cc6c"><td class="memItemLeft" align="right" valign="top">llvm::Module &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a3825379c4840a017b6ab91ec5b42cc6c">llvmModule</a> () const</td></tr>
<tr class="memdesc:a3825379c4840a017b6ab91ec5b42cc6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the module being generated.  <a href="#a3825379c4840a017b6ab91ec5b42cc6c">More...</a><br /></td></tr>
<tr class="separator:a3825379c4840a017b6ab91ec5b42cc6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a595537ffd4b3116059d59e3fd61f8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structchi_1_1NodeInstance.html">NodeInstance</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a8a595537ffd4b3116059d59e3fd61f8b">node</a> () const</td></tr>
<tr class="memdesc:a8a595537ffd4b3116059d59e3fd61f8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The node we're compiling.  <a href="#a8a595537ffd4b3116059d59e3fd61f8b">More...</a><br /></td></tr>
<tr class="separator:a8a595537ffd4b3116059d59e3fd61f8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca3f11932d8ee7dea4cfffb3b7bedbad"><td class="memItemLeft" align="right" valign="top"><a id="aca3f11932d8ee7dea4cfffb3b7bedbad"></a>
<a class="el" href="structchi_1_1NodeCompiler.html">NodeCompiler</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="structchi_1_1NodeCompiler.html">NodeCompiler</a> &amp;)=delete</td></tr>
<tr class="separator:aca3f11932d8ee7dea4cfffb3b7bedbad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71b9a6746dca01c0c42402a5ef082c54"><td class="memItemLeft" align="right" valign="top"><a id="a71b9a6746dca01c0c42402a5ef082c54"></a>
<a class="el" href="structchi_1_1NodeCompiler.html">NodeCompiler</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a71b9a6746dca01c0c42402a5ef082c54">operator=</a> (<a class="el" href="structchi_1_1NodeCompiler.html">NodeCompiler</a> &amp;&amp;)=default</td></tr>
<tr class="memdesc:a71b9a6746dca01c0c42402a5ef082c54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move assign. <br /></td></tr>
<tr class="separator:a71b9a6746dca01c0c42402a5ef082c54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa31a7c7955b51e5610b966f81bdc989d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#aa31a7c7955b51e5610b966f81bdc989d">pure</a> () const</td></tr>
<tr class="memdesc:aa31a7c7955b51e5610b966f81bdc989d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="structchi_1_1NodeCompiler.html#a8a595537ffd4b3116059d59e3fd61f8b" title="The node we&#39;re compiling. ">node()</a>.type().<a class="el" href="structchi_1_1NodeCompiler.html#aa31a7c7955b51e5610b966f81bdc989d" title="node().type().pure() ">pure()</a></code>  <a href="#aa31a7c7955b51e5610b966f81bdc989d">More...</a><br /></td></tr>
<tr class="separator:aa31a7c7955b51e5610b966f81bdc989d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4798bbddf994de6c4e3f607991456e09"><td class="memItemLeft" align="right" valign="top">std::vector&lt; llvm::Value * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structchi_1_1NodeCompiler.html#a4798bbddf994de6c4e3f607991456e09">returnValues</a> () const</td></tr>
<tr class="memdesc:a4798bbddf994de6c4e3f607991456e09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get return values.  <a href="#a4798bbddf994de6c4e3f607991456e09">More...</a><br /></td></tr>
<tr class="separator:a4798bbddf994de6c4e3f607991456e09"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Helper to compile nodes. </p>
<p>Nodes are compiled using many <code>BasicBlock</code>s The first are for the dependent pures, one for each. The idea is that you point the last pure to jump to the next pure, and when you get to the last pure, then go to the actual block for this node. </p>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8hpp_source.html#l00024">24</a> of file <a class="el" href="NodeCompiler_8hpp_source.html">NodeCompiler.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a60d81f093668468eb14be0e18e319ed5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60d81f093668468eb14be0e18e319ed5">&#9670;&nbsp;</a></span>NodeCompiler()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">chi::NodeCompiler::NodeCompiler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structchi_1_1FunctionCompiler.html">FunctionCompiler</a> &amp;&#160;</td>
          <td class="paramname"><em>functionCompiler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structchi_1_1NodeInstance.html">NodeInstance</a> &amp;&#160;</td>
          <td class="paramname"><em>inst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">functionCompiler</td><td>The function compiler instance </td></tr>
    <tr><td class="paramname">inst</td><td>The node to compile </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00022">22</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeType_8hpp_source.html#l00076">chi::NodeType::dataOutputs()</a>, <a class="el" href="FunctionCompiler_8hpp_source.html#l00085">chi::FunctionCompiler::diBuilder()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00042">funcCompiler()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>, <a class="el" href="NodeInstance_8hpp_source.html#l00068">chi::NodeInstance::stringId()</a>, and <a class="el" href="NodeInstance_8hpp_source.html#l00046">chi::NodeInstance::type()</a>.</p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a60d81f093668468eb14be0e18e319ed5_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ac63b5729c1bdb67a231a1f948ad59374"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac63b5729c1bdb67a231a1f948ad59374">&#9670;&nbsp;</a></span>codeBlock()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">llvm::BasicBlock &amp; chi::NodeCompiler::codeBlock </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>inputExecID</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the code block for a given inputExecID Requires that <code>compile_stage1</code> has been called for this ID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">inputExecID</td><td>the ID to get the code block for </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>inputExecID &lt; <a class="el" href="structchi_1_1NodeCompiler.html#a4599a3322541fe67adfa343c19b00dc4" title="The number of input execs that we can compile If it&#39;s pure or an entry node, this is 1...">inputExecs()</a></code> </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The BasicBlock </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00221">221</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8cpp_source.html#l00235">inputExecs()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00214">firstBlock()</a>, and <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>.</p>
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-1-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_ac63b5729c1bdb67a231a1f948ad59374_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-2" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-2-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_ac63b5729c1bdb67a231a1f948ad59374_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="af391b4e8ecebe8859490749bac0425de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af391b4e8ecebe8859490749bac0425de">&#9670;&nbsp;</a></span>compile_stage1()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void chi::NodeCompiler::compile_stage1 </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>inputExecID</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add the basic blocks and fill the pure blocks, but don't fill the code block nop if its already been called with this inputExecID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">inputExecID</td><td>The input exec to compile </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>inputExecID &lt; <a class="el" href="structchi_1_1NodeCompiler.html#a4599a3322541fe67adfa343c19b00dc4" title="The number of input execs that we can compile If it&#39;s pure or an entry node, this is 1...">inputExecs()</a></code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00091">91</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8cpp_source.html#l00221">codeBlock()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00233">context()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00244">chi::dependentPuresRecursive()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00214">firstBlock()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00042">funcCompiler()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00235">inputExecs()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00110">jumpBackInst()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>, <a class="el" href="FunctionCompiler_8cpp_source.html#l00353">chi::FunctionCompiler::nodeCompiler()</a>, and <a class="el" href="NodeCompiler_8cpp_source.html#l00089">pure()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>, and <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>.</p>
<div id="dynsection-3" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-3-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_af391b4e8ecebe8859490749bac0425de_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-4" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-4-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-4-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-4-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_af391b4e8ecebe8859490749bac0425de_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="ac3f5bd1f1f84fc1b35fc8ad54db3c844"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3f5bd1f1f84fc1b35fc8ad54db3c844">&#9670;&nbsp;</a></span>compile_stage2()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1Result.html">Result</a> chi::NodeCompiler::compile_stage2 </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; llvm::BasicBlock *&gt;&#160;</td>
          <td class="paramname"><em>trailingBlocks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>inputExecID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Fill the codegen block If compile_stage1 hasn't been called for this inputExecID, then it will be called nop if this inputExecID has been compiled before. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trailingBlocks</td><td>The basic blocks to br to when the node is done, one for each exec output </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="structchi_1_1NodeCompiler.html#aa31a7c7955b51e5610b966f81bdc989d" title="node().type().pure() ">pure()</a> || (trailingBlock.size() == <a class="el" href="structchi_1_1NodeCompiler.html#a8a595537ffd4b3116059d59e3fd61f8b" title="The node we&#39;re compiling. ">node()</a>.outputExecConnections.size())</code> Either it's pure (in which case <code>trailingBlock</code> is ignored) or it must be defined </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">inputExecID</td><td>The input exec ID to compile </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>inputExecID &lt; <a class="el" href="structchi_1_1NodeCompiler.html#a4599a3322541fe67adfa343c19b00dc4" title="The number of input execs that we can compile If it&#39;s pure or an entry node, this is 1...">inputExecs()</a></code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00151">151</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8cpp_source.html#l00221">codeBlock()</a>, <a class="el" href="structchi_1_1NodeType.html#ac6662ce1a327258cd1f879b63cfbfa06">chi::NodeType::codegen()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00228">compiled()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00233">context()</a>, <a class="el" href="NodeType_8hpp_source.html#l00073">chi::NodeType::dataInputs()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00042">funcCompiler()</a>, <a class="el" href="NodeInstance_8hpp_source.html#l00077">chi::NodeInstance::inputDataConnections</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00235">inputExecs()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>, <a class="el" href="NodeInstance_8hpp_source.html#l00080">chi::NodeInstance::outputExecConnections</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00089">pure()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00105">returnValues()</a>, and <a class="el" href="NodeInstance_8hpp_source.html#l00046">chi::NodeInstance::type()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>.</p>
<div id="dynsection-5" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-5-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-5-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-5-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_ac3f5bd1f1f84fc1b35fc8ad54db3c844_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-6" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-6-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-6-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-6-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_ac3f5bd1f1f84fc1b35fc8ad54db3c844_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="ab3db1222a66ea1767cd6dbc8a8a10963"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3db1222a66ea1767cd6dbc8a8a10963">&#9670;&nbsp;</a></span>compiled()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool chi::NodeCompiler::compiled </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>inputExecID</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get if compile_stage2 has been called for a given inputExecID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">inputExecID</td><td>the ID to check </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>inputExecID &lt; <a class="el" href="structchi_1_1NodeCompiler.html#a4599a3322541fe67adfa343c19b00dc4" title="The number of input execs that we can compile If it&#39;s pure or an entry node, this is 1...">inputExecs()</a></code> </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>true if it's already been called, false otherwise </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00228">228</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8cpp_source.html#l00235">inputExecs()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>, and <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>.</p>
<div id="dynsection-7" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-7-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-7-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-7-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_ab3db1222a66ea1767cd6dbc8a8a10963_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-8" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-8-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-8-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-8-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_ab3db1222a66ea1767cd6dbc8a8a10963_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="a12c42cfcd23400c523184966ed238806"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12c42cfcd23400c523184966ed238806">&#9670;&nbsp;</a></span>firstBlock()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">llvm::BasicBlock &amp; chi::NodeCompiler::firstBlock </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>inputExecID</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the first block to jump to for the node If there are dependent pures, it's the first pure block Otherwise, it's the code block <code>compile_stage1</code> needs to be called first for this ID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">inputExecID</td><td>the ID to get the block for. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code>inputExecID &lt; <a class="el" href="structchi_1_1NodeCompiler.html#a4599a3322541fe67adfa343c19b00dc4" title="The number of input execs that we can compile If it&#39;s pure or an entry node, this is 1...">inputExecs()</a></code> </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The basic block. </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00214">214</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8cpp_source.html#l00221">codeBlock()</a>, and <a class="el" href="NodeCompiler_8cpp_source.html#l00235">inputExecs()</a>.</p>

<p class="reference">Referenced by <a class="el" href="FunctionCompiler_8cpp_source.html#l00198">chi::FunctionCompiler::compile()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>, and <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>.</p>
<div id="dynsection-9" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-9-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-9-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-9-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a12c42cfcd23400c523184966ed238806_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-10" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-10-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-10-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-10-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a12c42cfcd23400c523184966ed238806_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="afd650ba41704bbeca337cbadb18f03cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd650ba41704bbeca337cbadb18f03cf">&#9670;&nbsp;</a></span>funcCompiler()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1FunctionCompiler.html">FunctionCompiler</a>&amp; chi::NodeCompiler::funcCompiler </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the function compiler. </p>
<dl class="section return"><dt>Returns</dt><dd>the <a class="el" href="structchi_1_1FunctionCompiler.html" title="Class for compiling GraphFunctions into llvm::Functions. ">FunctionCompiler</a> </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8hpp_source.html#l00042">42</a> of file <a class="el" href="NodeCompiler_8hpp_source.html">NodeCompiler.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00226">llvmModule()</a>, and <a class="el" href="NodeCompiler_8cpp_source.html#l00022">NodeCompiler()</a>.</p>
<div id="dynsection-11" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-11-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-11-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-11-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_afd650ba41704bbeca337cbadb18f03cf_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="a4599a3322541fe67adfa343c19b00dc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4599a3322541fe67adfa343c19b00dc4">&#9670;&nbsp;</a></span>inputExecs()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t chi::NodeCompiler::inputExecs </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The number of input execs that we can compile If it's pure or an entry node, this is 1, otherwise it's <a class="el" href="structchi_1_1NodeCompiler.html#a8a595537ffd4b3116059d59e3fd61f8b" title="The node we&#39;re compiling. ">node()</a>.inputExecConnections().size() </p>
<dl class="section return"><dt>Returns</dt><dd>The count </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00235">235</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeInstance_8hpp_source.html#l00074">chi::NodeInstance::inputExecConnections</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>, and <a class="el" href="NodeCompiler_8cpp_source.html#l00089">pure()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00221">codeBlock()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00228">compiled()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00214">firstBlock()</a>, and <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>.</p>
<div id="dynsection-12" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-12-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-12-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-12-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a4599a3322541fe67adfa343c19b00dc4_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-13" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-13-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-13-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-13-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a4599a3322541fe67adfa343c19b00dc4_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="a7dc06ad0390f2113fbeb5e7c0cf3dd06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dc06ad0390f2113fbeb5e7c0cf3dd06">&#9670;&nbsp;</a></span>jumpBackInst()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">llvm::IndirectBrInst&amp; chi::NodeCompiler::jumpBackInst </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the IndirectBrInst* for the pure. </p>
<dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="structchi_1_1NodeCompiler.html#aa31a7c7955b51e5610b966f81bdc989d" title="node().type().pure() ">pure()</a></code> </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>The indirectbr instance </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8hpp_source.html#l00110">110</a> of file <a class="el" href="NodeCompiler_8hpp_source.html">NodeCompiler.hpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8cpp_source.html#l00244">chi::dependentPuresRecursive()</a>, and <a class="el" href="NodeCompiler_8cpp_source.html#l00089">pure()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>.</p>
<div id="dynsection-14" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-14-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-14-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-14-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a7dc06ad0390f2113fbeb5e7c0cf3dd06_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-15" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-15-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-15-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-15-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a7dc06ad0390f2113fbeb5e7c0cf3dd06_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="a3825379c4840a017b6ab91ec5b42cc6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3825379c4840a017b6ab91ec5b42cc6c">&#9670;&nbsp;</a></span>llvmModule()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">llvm::Module &amp; chi::NodeCompiler::llvmModule </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the module being generated. </p>
<dl class="section return"><dt>Returns</dt><dd>The Module </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00226">226</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8hpp_source.html#l00042">funcCompiler()</a>, and <a class="el" href="FunctionCompiler_8hpp_source.html#l00081">chi::FunctionCompiler::llvmModule()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>.</p>
<div id="dynsection-16" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-16-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-16-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-16-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a3825379c4840a017b6ab91ec5b42cc6c_cgraph.svg" width="343" height="118"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-17" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-17-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-17-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-17-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a3825379c4840a017b6ab91ec5b42cc6c_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="a8a595537ffd4b3116059d59e3fd61f8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a595537ffd4b3116059d59e3fd61f8b">&#9670;&nbsp;</a></span>node()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structchi_1_1NodeInstance.html">NodeInstance</a>&amp; chi::NodeCompiler::node </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The node we're compiling. </p>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="structchi_1_1NodeInstance.html" title="An instance of a node. ">NodeInstance</a> </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8hpp_source.html#l00046">46</a> of file <a class="el" href="NodeCompiler_8hpp_source.html">NodeCompiler.hpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8cpp_source.html#l00221">codeBlock()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00228">compiled()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00233">context()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00214">firstBlock()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00235">inputExecs()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00226">llvmModule()</a>, and <a class="el" href="NodeCompiler_8cpp_source.html#l00089">pure()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00233">context()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00235">inputExecs()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00022">NodeCompiler()</a>, and <a class="el" href="NodeCompiler_8cpp_source.html#l00089">pure()</a>.</p>
<div id="dynsection-18" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-18-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-18-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-18-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a8a595537ffd4b3116059d59e3fd61f8b_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-19" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-19-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-19-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-19-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a8a595537ffd4b3116059d59e3fd61f8b_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="aa31a7c7955b51e5610b966f81bdc989d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa31a7c7955b51e5610b966f81bdc989d">&#9670;&nbsp;</a></span>pure()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool chi::NodeCompiler::pure </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><code><a class="el" href="structchi_1_1NodeCompiler.html#a8a595537ffd4b3116059d59e3fd61f8b" title="The node we&#39;re compiling. ">node()</a>.type().<a class="el" href="structchi_1_1NodeCompiler.html#aa31a7c7955b51e5610b966f81bdc989d" title="node().type().pure() ">pure()</a></code> </p>
<dl class="section return"><dt>Returns</dt><dd><code><a class="el" href="structchi_1_1NodeCompiler.html#a8a595537ffd4b3116059d59e3fd61f8b" title="The node we&#39;re compiling. ">node()</a>.type().<a class="el" href="structchi_1_1NodeCompiler.html#aa31a7c7955b51e5610b966f81bdc989d" title="node().type().pure() ">pure()</a></code> </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8cpp_source.html#l00089">89</a> of file <a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a>.</p>

<p class="reference">References <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>, <a class="el" href="NodeType_8hpp_source.html#l00086">chi::NodeType::pure()</a>, and <a class="el" href="NodeInstance_8hpp_source.html#l00046">chi::NodeInstance::type()</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00091">compile_stage1()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>, <a class="el" href="NodeCompiler_8cpp_source.html#l00235">inputExecs()</a>, <a class="el" href="NodeCompiler_8hpp_source.html#l00110">jumpBackInst()</a>, and <a class="el" href="NodeCompiler_8hpp_source.html#l00046">node()</a>.</p>
<div id="dynsection-20" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-20-trigger" src="closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-20-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-20-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_aa31a7c7955b51e5610b966f81bdc989d_cgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<div id="dynsection-21" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-21-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-21-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-21-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_aa31a7c7955b51e5610b966f81bdc989d_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<a id="a4798bbddf994de6c4e3f607991456e09"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4798bbddf994de6c4e3f607991456e09">&#9670;&nbsp;</a></span>returnValues()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;llvm::Value*&gt; chi::NodeCompiler::returnValues </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get return values. </p>
<dl class="section return"><dt>Returns</dt><dd>a vector of the return values </dd></dl>

<p class="definition">Definition at line <a class="el" href="NodeCompiler_8hpp_source.html#l00105">105</a> of file <a class="el" href="NodeCompiler_8hpp_source.html">NodeCompiler.hpp</a>.</p>

<p class="reference">Referenced by <a class="el" href="NodeCompiler_8cpp_source.html#l00151">compile_stage2()</a>.</p>
<div id="dynsection-22" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-22-trigger" src="closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-22-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-22-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="structchi_1_1NodeCompiler_a4798bbddf994de6c4e3f607991456e09_icgraph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>

</div>
</div>
<hr/>The documentation for this struct was generated from the following files:<ul>
<li>lib/core/include/chi/<a class="el" href="NodeCompiler_8hpp_source.html">NodeCompiler.hpp</a></li>
<li>lib/core/src/<a class="el" href="NodeCompiler_8cpp_source.html">NodeCompiler.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacechi.html">chi</a></li><li class="navelem"><a class="el" href="structchi_1_1NodeCompiler.html">NodeCompiler</a></li>
    <li class="footer">Generated on Sat Sep 16 2017 17:41:35 for chigraph by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
